package com.itheima.stock.mapper;

import com.itheima.stock.common.domain.*;
import com.itheima.stock.pojo.StockRtInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.http.ResponseEntity;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
* @author HearTheSong
* @description 针对表【stock_rt_info(个股详情信息表)】的数据库操作Mapper
* @createDate 2022-03-13 17:42:28
* @Entity com.itheima.stock.pojo.StockRtInfo
*/
@Mapper
public interface StockRtInfoMapper {

    int deleteByPrimaryKey(Long id);

    int insert(StockRtInfo record);

    int insertSelective(StockRtInfo record);

    StockRtInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockRtInfo record);

    int updateByPrimaryKey(StockRtInfo record);
    /**
     * 沪深两市个股涨幅分时行情数据查询，以时间顺序和涨幅查询前10条数据
     * @return
     */
    List<StockUpdownDomain> stockIncreaseLimit(@Param("curDate") Date curDate);
    /**
     * 沪深两市个股行情列表查询 ,以时间顺序和涨幅分页查询
     * @return
     */
    List<StockUpdownDomain> getRtStockAll();
    /**
     * 根据指定日期范围统计对应范围内每分钟的涨停或者跌停的数据
     * @param flag 标识: 1代表涨停 0：代表跌停
     * @return
     */
    List<Map> getStockUpDownCount(@Param("openTime") Date openDate,@Param("closeTime") Date closeDate,@Param("flag") int flag);
    /**
     * 查询当前时间下股票的涨跌幅度区间统计功能
     * 如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询点
     * @return
     */
    List<Map> stockUpDownRegionCount(@Param("date") Date lastDate);
    /**
     * 功能描述：查询单个个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据；
     *         如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询时间点
     * @param marketCode 股票编码
     * @return
     */
    List<Stock4MinuteDomain> getStockEveryTimeInfo(@Param("code") String marketCode, @Param("openDate") Date openDate,@Param("lastDate") Date lastDate);
    /**
     * 单个个股日K 数据查询 ，可以根据时间区间查询数日的K线数据
     * @param stockCode 股票编码
     */
    List<Stock4EvrDayDomain> getStockEveryDayInfo(@Param("code")String stockCode, @Param("startDate")Date startDate,@Param("lastDate") Date lastDate);
    /*
        批量插入数据到数据库 从接口中查询到各个股票的详细信息
     */
    void insertBatch(@Param("result") List<StockRtInfo> result);
    /*
        功能描述：统计每周内的股票数据信息，信息包含：
        股票ID、 一周内最高价、 一周内最低价 、周1开盘价、周5的收盘价、
        整周均价、以及一周内最大交易日期（一般是周五所对应日期）;
        服务路径：/api/quot/stock/screen/weekkline
        服务方法：GET
        请求参数：code //股票编码
    */
    List<WeeklineDomain> getRtStockWeekline(@Param("code") String code);
     /*
        功能描述：
        获取个股最新分时行情数据，主要包含：
        开盘价、前收盘价、最新价、最高价、最低价、成交金额和成交量、交易时间信息;
        服务路径：/api/quot/stock/screen/second/detail
        服务方法：GET
        请求参数：code //股票编码
        请求频率：每分钟
     */
     StockRtMinuteDomain getStockRtMinuteInfo(@Param("code") String code,@Param("lastDate") Date lastDate);
    /*
        功能描述：个股交易流水行情数据查询--查询最新交易流水，按照交易时间降序取前10
        服务路径：/quot/stock/screen/second
        服务方法：GET
        请求频率：5秒
    */
    List<StockRtLastTradeInfo> queryStockRtLastTradeInfo();

}
